QuickSight コンソール上の操作時に「because no session policy allows」を含むエラーメッセージが表示された場合の対処方法
困っている内容
QuickSight にて RDS データソースを作成しました。
その際、認証情報として SecretsManager の ARN を指定しました。
QuickSight のコンソール上から上記データソースを選択して、新しいデータセットを作成しようとした際に「INSUFFICIENT_PERMISSIONS」エラーが発生しました。
CloudTrail を確認した所、下記のエラーメッセージが出力されていました。
※QuickSight 上のエラーの詳細画面にも、"sourceErrorMessage" で同じエラーメッセージが出力されていました。
"errorMessage": "User: arn:aws:sts::<AWS アカウント ID>:assumed-role/<IAM ロール名>/<ロールセッション名> is not authorized to perform: secretsmanager:GetSecretValue on resource: <Secrets Manager の ARN> because no session policy allows the secretsmanager:GetSecretValue action"
しかし、エラーメッセージに記載されている IAM ロールには以下の許可が付与されているため、問題ないように見えました。
{
"Sid": "AllowSecrets",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": <Secrets Manager の ARN>
},
なお、データソースの編集からユーザー名とパスワードを手動で入力(SecretsManager から取得しない)設定に更新すると、正常に DB へアクセスできることを確認できました。
上記エラーの対処方法を教えてください。
どう対応すればいいの?
QuickSight 管理画面の [セキュリティとアクセス許可] ページの [個々のユーザーとグループのリソースへのアクセス] で、ユーザやグループに対し IAM ポリシーがアタッチされていないかご確認ください。
IAM ポリシーがアタッチされている場合には、該当の IAM ポリシーに必要な権限を許可することで事象が解消されるかご確認ください。
本エラーメッセージに「because no session policy allows」という文言が含まれていることから、セッションポリシーで該当のアクション(上記ケースの場合は "secretsmanager:GetSecretValue") が許可されていないため、データセットの作成時にエラーが発生したものと考えられます。
セッションポリシーが設定されている場合、IAM ポリシーやリソースベースポリシーだけでなく、セッションポリシーでも権限を許可する必要があります。[1][2]
参考資料
[1] Session policies